package com.fowo.api.sys.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fowo.api.common.mybatis.handlers.IdListTypeHandler;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;
import java.util.List;

@EqualsAndHashCode(callSuper = true)
@Schema(title = "系统菜单")
@Data
@TableName(value = "sys_menu", autoResultMap = true)
public class SysMenu extends SysBase implements Serializable {
    /**
     * 上级菜单 id, 对于根菜单来说为空值
     */
    private Long parentMenuId;

    /**
     * 菜单类型(MENU - 没有页面的菜单，PAGE - 有页面的菜单, ACTION - 菜单上的操作
     */
    private String menuType;

    /**
     * 菜单名称
     */
    private String menuName;

    /**
     * 菜单名称国际化键名
     */
    private String titleKey;

    /**
     * 菜单图标
     */
    private String icon;

    /**
     * 是否不显示在菜单栏中
     */
    private Boolean hideInMenu;

    /**
     * 路由地址
     */
    private String url;

    /**
     * 组件地址
     */
    private String component;

    /**
     * 参数
     */
    private String params;

    /**
     * 顺序，从大到小
     */
    private Integer sort;

    /**
     * 权限键，表示此菜单可见需要的权限
     */
    private String authority;

    /**
     * 蜜造平台生成权限（应用编辑菜单后主动更新为 0）
     */
    private Integer beeMakeAccess;

    /**
     * 其它权限标识
     */
    private String otherAuthorities;

    /**
     * 此菜单项在哪些应用中生效
     */
    @TableField(typeHandler = IdListTypeHandler.class)
    private List<Long> appIds;
}
